From c68a4ad4f602b6d25369b6ff78b85a43901711d8 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 12 Nov 2010 19:19:48 -0500 Subject: [PATCH] Fix a crash in gnome-terminal when using a compositor In this case, gnome-terminal sets an RGBA visual on its window, and we need to be careful when creating the icon pixmap, to create the pixmap with the same depth as the visual, or we risk a BadMatch from XRenderCreatePicture deep inside cairo. --- gdk/x11/gdkwindow-x11.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 9f54ddc3c5..88d85101ae 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -278,14 +278,16 @@ gdk_x11_window_create_pixmap_surface (GdkWindow *window, { cairo_surface_t *surface; Pixmap pixmap; + GdkVisual *visual; + visual = gdk_window_get_visual (window); pixmap = XCreatePixmap (GDK_WINDOW_XDISPLAY (window), GDK_WINDOW_XID (window), width, height, - DefaultDepthOfScreen (GDK_SCREEN_XSCREEN (GDK_WINDOW_SCREEN (window)))); + gdk_visual_get_depth (visual)); surface = cairo_xlib_surface_create (GDK_WINDOW_XDISPLAY (window), pixmap, - GDK_VISUAL_XVISUAL (gdk_window_get_visual (window)), + GDK_VISUAL_XVISUAL (visual), width, height); attach_free_pixmap_handler (surface, GDK_WINDOW_DISPLAY (window), pixmap); -- 2.30.2